LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

计算机图形学⑥

2021/4/16

6.Shading 1(Illumination,Shading)(照明和着色

6.Shading 1(Illumination,Shading)(照明和着色)

小葵花妈妈课堂开课啦(误)


Z-Buffer(深度缓冲)

Visibiliy(可见性):如何把多个物体显示在屏幕上,且位置的对应关系是对的

画家算法:先将远的物体光栅化,如何再逐渐光栅化近的物体

image-20210416165624059

因为画家算法没有办法解决这种杠精问题

所以大伙引入了Z-Buffer(深度缓冲)

Z-Buffer(深度缓冲):

我们之前默认相机放在原点离-z方向看,这里假设z越小离我们越近

同时生成一个frame buffer和一个z buffer(维护每个像素的深度)

image-20210416170341440
就像这样
image-20210416170526880
算法如图所示
image-20210416170801400
假设这里的R是无限大,深度小的(即离我们更近)就会把深度大的遮挡住

这里我们维护的对象是每一个像素

透明物体没办法渲染!!!!!!


小结

总结一下我们目前学习的内容
image-20210416173309456

  1. 将模型变换(model)
  2. 将视图变换(view)
  3. 三维投影到屏幕(projection)
  4. 进行光栅化,得到采样结果(rasterization)

だから

shading(着色)他来啦!!!

shading(着色)

image-20210416173309456

来跟我读:谢顶

在图形学中,我们定义着色为对不同物体使用不同材质,不同材质和光线的相互作用有不同的方法

image-20210416173814199

我们可以看到高光(specular highlight),漫反射(Diffuse reflection),环境光(ambient lighting)

diffuse reflection in Blinn-Phong Reflectance Model(布林冯中的漫反射)

image-20210416174102298

我们来做一些定义:

shading point:考虑一个点(在极小范围内的一个平面)的结果

surface normal(平面法线)

view direction(观察方向)

light direction(光照方向)

surface parameters(表面参数):例如颜色,亮度

此处所有向量为单位向量

shading!=shadow!!!!

image-20210416182519198

为什么同一束光打到一个点,角度不同亮度就不同呢?

我们假设光离散成六根光线,看得出来物体法线和光的夹角越小,物体表面受到的光就越少(看我们这里第一幅图,物体表面法线和光平行)

更科学的理解:光是一种能量,所以考虑收到的能量有多少

接下来是一个我并不想关心也不想记住推导过程的公式(请返回原视频56分处)

若光源强度(能量)为I,则距离光源距离r的光强度(能量)等于I/r2

image-20210416184055283

我们可以算出光源到点的距离r,就可以求出点位置有多少能量,然后再和其余弦,漫反射系数,进行相乘。

点位置的能量:(I/r2)

余弦是图中光照方向和法线点乘:max(0,n·l)

(也就是图中的,加上一个0取max是因为我们讨论光的反射,若余弦小于0/角度为负数则没有任何物理意义)

定义漫反射系数:kd

(若kd=1,则表示这个点完全不吸收能量,若kd=0,emm你可以认为这个点是黑洞)

最后就能求出ld(这个点应该表现多少光)

我们看到公示里面没有涉及到观测方向,所以漫反射结果和观测方向没有关系


完成啦完成啦,4.16 19:00,今天是周五玩游戏去啦